A computing device, such as a server, router, desktop computer, laptop, etc., includes an operating system layer and an application layer to enable the device to perform various functions or roles. The operating system layer includes a “kernel” (i.e., master control program) that runs the computing device. The kernel provides task management, device management, and data management, among others. The kernel sets the standards for application programs that run on the computing device and controls resources used by application programs. The application layer includes programs, i.e., executable instructions, which are located above the operating system layer and accessible by a user. As used herein, “user space”, “user-mode”, or “application space” implies a layer of code which is less privileged and more directly accessible by users than the layer of code which is in the operating system layer or “kernel” space. The operating system layer has software programs that include a set of Application Program Interfaces (APIs). The API includes callable software procedures for execution on the processing resources in support of application procedures. The language and/or message format of the APIs allow an operating system to interpret executable instructions received from program applications (e.g., service applications) in the application layer and return results to the programs in the application layer. The operating system performs functions such as scheduling application programs and resolving conflicts between applications that request access to the same resources. Additionally, OSs communicate service requests from application programs to the hardware device drivers. As used herein an operating system of a computer system can include a Unix, Linux, AIX, Windows, and/or Mac operating system, etc. Computer systems can include network interfaces to connect to other computing systems and outside networks over a local area network (LAN), wide area network (WAN), Internet, and/or wireless network, etc.
Firmware is a set of hardware setup and runtime programs. Firmware is stored in flash memory, read only memory (ROM), on disk, e.g., on a number of kinds of storage, etc. Firmware includes programs such as device drivers, which are used to activate the hardware of a computer system. For example, some firmware (FW) can be provided pre-operating system (OS) boot, e.g., is used to bootstrap an OS such that it knows how to run on a particular set of system hardware (HW) to get to a standard handoff state, i.e., state from which the OS takes control. This example can be achieved by the FW passing tables, services, etc., to the OS for the OS to take over control of a particular device.
Firmware is often released on sporadic schedules, and not easily adaptable to changes that are needed to add or modify particular system behavior. Sometimes a particular set of firmware is useful to a particular OS, but is not useful, and may even pose issues for, other OSs on a system which supports multiple OSs with a shared firmware image. Having per OS behaviors or structures can add complexity to a given system. Additionally, it is possible to have a particular firmware behavior for a particular situation, such as OS install, while another behavior during an OS boot.
A firmware interface refers to software routines and data structures to enable communication between an operating system and hardware resources of a system, e.g., hardware and software resources for accomplishing computational tasks. Such a firmware interface may define an interface between the hardware resources of a processing system and for one or more independently developed operating systems. Beginning input an output system (BIOS) routines may be executed on hardware resources to install the software routines and data structures of a firmware interface on hardware resources of a processing system and then subsequently install an operating system during a boot sequence.
System firmware may have an extended firmware interface (EFI) format. The extended firmware interface (EFI) format is an industry architecture specification. The EFI provides an interface between the OS and the platform firmware. The interface is in the form of data tables that contain platform-related information, and boot and runtime service calls that are available to the OS and its loader. The EFI helps provide an environment for booting the OS and running system maintenance applications. The EFI provides a coherent, scalable platform environment. The EFI specification defines a solution for the firmware to describe platform features and surface platform capabilities to the OS.
The existence of EFI or other platform firmware (FW) does not accommodate sporadic schedules to firmware releases or adaptability to changes to add or modify particular operating system behavior. Nor does the EFI specification itself provide the capability to filter and/or patch firmware changes associated with a particular OS but not other OSs on a system which supports multiple OSs which share firmware image.